﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

using Gra.Seguros.Servicio.Bl;
using Gra.Seguros.Servicio.Be;
using Gra.Seguros.Servicio.Ws.Be;


namespace Gra.Seguros.Servicio.Ws
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "CotizacionSeguro" en el código, en svc y en el archivo de configuración a la vez.
    public class MatrizDecision : IMatrizDecision
    {
        public List<AseguradoraWs> listarAseguradoras()
        {
            
            AseguradoraBl obj = new AseguradoraBl();
            List<AseguradoraBe> lst = new List<AseguradoraBe>();
            lst = obj.listar();
            var lQuery = from c in lst
                         select new AseguradoraWs
                         {
                             cAseguradora = c.cAseguradora,
                             dAseguradora = c.dAseguradora
                         };
            return lQuery.ToList();
        }


        public List<EventoWs> listarEventos(string _cClaseEvento)
        {
            EventoBl obj = new EventoBl();
            List<EventoBe> lst = new List<EventoBe>();
            lst = obj.listar(Convert.ToInt32(_cClaseEvento));
            var lQuery = from c in lst
                         select new EventoWs
                         {
                             cEvento=c.cEvento,
                             dEvento=c.dEvento,
                             cTipoEvento=c.oTipoEvento.cTipoEvento,
                             dTipoEvento=c.oTipoEvento.dTipoEvento,
                             cClaseEvento=c.oClaseEvento.cClaseEvento,
                             dClaseEvento=c.oClaseEvento.dClaseEvento,
                             nValMin=c.nValMin,
                             nValMax=c.nValMax,
                             nValIntervalo=c.nIntervalo,
                             dValorDefecto=c.dValorDefecto                            
                         };
            return lQuery.ToList();
        }


        public List<EventoWs> listarEventosxEvento(string _cEvento)
        {
            EventoBl obj = new EventoBl();
            List<EventoBe> lst = new List<EventoBe>();
            lst = obj.listarxEvento(Convert.ToInt32(_cEvento));
            var lQuery = from c in lst
                         select new EventoWs
                         {
                             cEvento = c.cEvento,
                             dEvento = c.dEvento,
                             cTipoEvento = c.oTipoEvento.cTipoEvento,
                             dTipoEvento = c.oTipoEvento.dTipoEvento,                             
                             nValMin = c.nValMin,
                             nValMax = c.nValMax,
                             nValIntervalo = c.nIntervalo,
                             dValorDefecto = c.dValorDefecto
                         };
            return lQuery.ToList();
        }

        public List<MatrizDecisionWs> listarMatriz(string _cTipoSeguro, string _cRamo, string _cAseguradora)
        {
            MatrizDecisionBl obj = new MatrizDecisionBl ();
            List<MatrizDecisionBe> lst = new List<MatrizDecisionBe>();
            lst = obj.listar(Convert.ToInt32(_cTipoSeguro),Convert.ToInt32(_cRamo), Convert.ToInt32(_cAseguradora));
            var lQuery = from c in lst
                         select new MatrizDecisionWs
                         {
                             cTipoSeguro=c.oRamo.oTipoSeguro.cTipoSeguro,
                             dTipoSeguro=c.oRamo.oTipoSeguro.dTipoSeguro,                             
                             cAseguradora=c.oAseguradora.cAseguradora,
                             dAseguradora=c.oAseguradora.dAseguradora,                                                         
                             cRamo = c.oRamo.cRamo,
                             dRamo = c.oRamo.dRamo,
                             nCantidad = c.nCantidad,
                             cMatrizc=c.cMatrizC                             
                         };
            return lQuery.ToList();
        }

        public string anularMatriz(string _str_Matriz)
        {
            MatrizDecisionBl obj = new MatrizDecisionBl();
            _str_Matriz = _str_Matriz.Replace("$", "<");
            _str_Matriz = _str_Matriz.Replace("@", ">");
            _str_Matriz = _str_Matriz.Replace("-", "/");
            return obj.anular(_str_Matriz);
        }
    }
}
